'use strict';

const fs = require('fs');
const path = require('path');
const os = require('os');

module.exports = {
  parseInt(string) {
    if (typeof string === 'number') return string;
    if (!string) return string;
    return parseInt(string) || 0;
  },
  normalizeXlsx(param) {
    // this 是 helper 对象，在其中可以调用其他 helper 方法
    // this.ctx => context 对象
    // this.app => application 对象
    return param;
  },
  osInfo() {
    return [
      { 'os.tmpdir': os.tmpdir(), extra: '返回操作系统的默认临时文件夹。' },
      { 'os.endianness': os.endianness(), extra: 'CPU 的字节序' },
      { 'os.hostname': os.hostname(), extra: '返回操作系统的主机名。' },
      { 'os.type': os.type(), extra: '操作系统名' },
      { 'os.platform': os.platform(), extra: '操作系统名' },
      { 'os.arch': os.arch(), extra: '返回操作系统 CPU 架构，可能的值有 "x64"、"arm" 和 "ia32"。' },
      { 'os.release': os.release(), extra: '返回操作系统的发行版本。' },
      { 'os.uptime': os.uptime(), extra: '返回操作系统运行的时间，以秒为单位。' },
      { 'os.loadavg': os.loadavg(), extra: '返回一个包含 1、5、15 分钟平均负载的数组。' },
      { 'os.totalmem': os.totalmem(), extra: '系统内存总量' },
      { 'os.freemem': os.freemem(), extra: '操作系统空闲内存量' },
      { 'os.cpus': os.cpus(), extra: '返回一个对象数组，包含所安装的每个 CPU/内核的信息：型号、速度（单位 MHz）、时间（一个包含 user、nice、sys、idle 和 irq 所使用 CPU/内核毫秒数的对象）。' },
      { 'os.networkInterfaces': os.networkInterfaces(), extra: '获得网络接口列表。' },
    ]
  },
  mkdirsSync(dirname) {
    if (fs.existsSync(dirname)) {
      return true;
    } else {
      if (this.mkdirsSync(path.dirname(dirname))) {
        fs.mkdirSync(dirname);
        return true;
      }
    }
  },
  sleep(time) {
    return new Promise(resolve => {
      setTimeout(() => resolve(), time);
    })
  }
};